#include <stdio.h>
#include <malloc.h>
void *f(int *pppp)
{
	int *s;
	int t;
	t = 11;
	//s = &11，这种写法是不行的。因为11本身不是变量，因此不会被分配空间。一定要写成&t。同理，×s = 11也是不成立的。原因同上。
	s = &t;

	//状态：pppp 本身标记位为【4444】，内部存储的值为【1000】，s 本身标记位为【5555】，内部存储的值为【2000】。	
	pppp = s;		
	//当 pppp = s 的时候，pppp本身的标记位为【5555】，内部存储的值变为【2000】。
	//此时，在f（）函数中，打印pppp，得到指向5555的数值，为11；但是在main（）函数中，×p的标记位依然是4444，内部的内容依然是【1000】。
	//所以得到的值还是为10.

	*pppp = t;
	//在pppp = s 这句话不存在的情况下。*pppp = t; 此时的状态为：pppp 本身的标记位为【4444】，内部存储值变为【2000】，因此在
	//main（）函数打印下，变成了11.
	//注意，如果写成了 pppp = &t，则 pppp的标记位变成了【6666】，内部存储值为【2000】，因此在main函数里面打印依然为10.

	//总结：在main（）函数里面，只会打印标记位为【4444】的指针所指向的内容，因此，如果在其他函数中，将【4444】的变量变化了之后，都不会
	//让main（）函数识别。只有操作【4444】指向的内容，才会被main（）函数识别。

	
	


	

}
int main()
{
	int *p = (int *)malloc(sizeof(int));

	*p = 10;
	f(p);
	printf("*p = %d\n",*p);
	return 0;
}